import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
print("Setup Complete")
Setup Complete
# Path of the file to read
insurance_filepath = "./insurance.csv"
# Read the file into a variable insurance_data
insurance_data = pd.read_csv(insurance_filepath)
讀取完資料後,可以將其前5筆資料印出
insurance_data.head()
要創建一個簡單的散佈圖,需要先設定x軸跟y軸需要的資料
sns.scatterplot(x=insurance_data['bmi'], y=insurance_data['charges'])
<AxesSubplot:xlabel='bmi', ylabel='charges'>
以上圖來說,BMI越高的人,被收的費用理論上也會越多
可以在圖表中多加一條回歸線(regression line),可以確保猜測是對的
sns.regplot(x=insurance_data['bmi'], y=insurance_data['charges'])
<AxesSubplot:xlabel='bmi', ylabel='charges'>
若我們想在圖表中看出吸菸(smoke)跟BMI還有收費(charge)之間的關係,可以將圖表中加入顏色
sns.scatterplot(x=insurance_data['bmi'], y=insurance_data['charges'], hue=insurance_data['smoker'])
<AxesSubplot:xlabel='bmi', ylabel='charges'>
這時我們可以使用sns.lmplot
來看出這兩個區間的回歸線差別
sns.lmplot(x="bmi", y="charges", hue="smoker", data=insurance_data)
<seaborn.axisgrid.FacetGrid at 0x7f894623c080>
可以看出吸菸者的回歸線比沒有吸菸的人高陡峭很多
sns.lmplot
跟之前遇到的產生圖表的方法有些許的差異
x=insurance_data['bmi']
,在這個方法中只需要用x="bmi"
data=insurance_data
可以讀取檔案若是想做categorical scatter plot的圖表,可以使用swarmplot來繪製圖表
sns.swarmplot(x=insurance_data['smoker'],
y=insurance_data['charges'])
/opt/conda/lib/python3.6/site-packages/seaborn/categorical.py:1296: UserWarning: 67.3% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.
warnings.warn(msg, UserWarning)
<AxesSubplot:xlabel='smoker', ylabel='charges'>